import Vue from 'vue'
import VueRouter from 'vue-router'
// import layout from '@/layout'

Vue.use(VueRouter)

// 解决路由重复点击报错
const originalPush = VueRouter.prototype.push
VueRouter.prototype.push = function push(location) {
    return originalPush.call(this, location).catch((err) => err)
}
const layout = () => import('@/layout')
//所有权限通用路由表
//如首页和登录页和一些不用权限的公用页面
export const constantRoutes = [
    {
        path: '/login',
        component: () => import('@/view/login/login'),
        hidden: true
    }
]
// * 404 必须放在路由的最后面
export const _404Route = { name: '404', path: '*', component: () => import('@/components/ErrorPage/404'), hidden: true }

//实例化vue的时候只挂载constantRouter
const createRouter = () =>
    new VueRouter({
        // mode: 'history', // history模式，后端驱动路由，后端需要配置请求拦截，任何不属于后端的请求，返回index.html页面
        base: process.env.BASE_URL,
        scrollBehavior: () => ({ y: 0 }),
        routes: constantRoutes
    })

const router = createRouter()

/**
 *  @resetRouter
 *  前端出现路由权限变更 / 增删修改路由时
 *  无需刷新页面自动生成新的路由列表
 *  router.matcher = newRouter.matcher
 */
export function resetRouter() {
    const newRouter = createRouter()
    console.log('重新生成路由', router.matcher, newRouter.matcher)
    // 路由信息存放位置
    router.matcher = newRouter.matcher
}

export default router
